#include "configUI.h"
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <QString>
#include <QFileDialog>
#include <QInputDialog>

void ConfigUI::configUpdate(const QString& qFilePath, const QString& qFileName) {
	m_qFilePath = qFilePath;
	m_qFileName = qFileName;
}

bool ConfigUI::read_config() {
	QFile file("src_config/config.config");
	if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
		//QMessageBox::warning(nullptr, tr("Waring: "), tr("Failed to read config file"));
		QMessageBox::warning(nullptr, tr("警告："), tr("读取配置文件失败！"));
		return false;
	}
	QTextStream in(&file);
	in.setAutoDetectUnicode(true); // 自动检测UTF-BOM
	while (!in.atEnd()) {
		QString line = in.readLine().trimmed();

		if (line.isEmpty()) continue; // 跳过空行

		if (line.startsWith("$defaltPath")) {
			m_qFilePath = line.section(' ', 1); // 从第一个空格后开始截取
		}
		else if (line.startsWith("$defaltName")) {
			m_qFileName = line.section(' ', 1);
		}
		else if (line.startsWith("$")) {
			QMessageBox::warning(nullptr, tr("警告："), tr("配置文件中存在位置的行！"));
			continue;
		}
	}
	file.close();
	return true;
}
bool ConfigUI::write_config()const {
	// 1. 打开原文件读取
	QFile inputFile("src_config/config.config");
	if (!inputFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
		qDebug() << "无法打开配置文件:" << inputFile.errorString();
		QMessageBox::warning(nullptr, "错误", "无法打开配置文件");
		return false;
	}
	// 2. 创建临时文件
	QFile outputFile("src_config/temp.txt");
	if (!outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
		qDebug() << "无法创建临时文件:" << outputFile.errorString();
		inputFile.close();
		QMessageBox::warning(nullptr, "错误", "无法创建临时文件");
		return false;
	}
	// 3. 处理文件内容
	QTextStream in(&inputFile);
	QTextStream out(&outputFile);

	while (!in.atEnd()) {
		QString line = in.readLine();
		if (line.startsWith("$defaltPath")) {
			out << "$defaltPath " << m_qFilePath << Qt::endl;
		}
		else if (line.startsWith("$defaltName")) {
			out << "$defaltName " << m_qFileName << Qt::endl;
		}
		else {
			out << line << Qt::endl;
		}
	}
	// 4. 关闭文件
	inputFile.close();
	outputFile.close();
	// 5. 替换文件
	if (!QFile::remove("src_config/config.config")) {
		qDebug() << "无法删除原配置文件";
		return false;
	}
	if (!QFile::rename("src_config/temp.txt", "src_config/config.config")) {
		qDebug() << "无法重命名临时文件";
		QFile::rename("src_config/temp.txt", "src_config/backup_config.txt"); // 保留临时文件作为备份
		return false;
	}
	return true;
}